using ERPBackend.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ERPBackend.Services.Interfaces
{
    public interface IOtherStockInService
    {
        Task<IEnumerable<OtherStockIn>> GetAllOtherStockInsAsync();
        Task<int> GetTotalOtherStockInsAsync();
        Task<IEnumerable<OtherStockIn>> GetOtherStockInsPagedAsync(int page, int pageSize);
        Task<OtherStockIn?> GetOtherStockInByIdAsync(int id);
        Task<OtherStockIn?> GetOtherStockInByCodeAsync(string stockInCode);
        Task<OtherStockIn> CreateOtherStockInAsync(OtherStockIn otherStockIn);
        Task<bool> UpdateOtherStockInAsync(OtherStockIn otherStockIn);
        Task<bool> DeleteOtherStockInAsync(int id);
        Task<bool> ChangeOtherStockInStatusAsync(int id, string status, int? updatedBy);
        Task<bool> ApproveOtherStockInAsync(int id, int approvedBy, string? approvalRemark = null);
    }
}